package com.bpz.main.dao;

import com.bpz.main.model.Page;

import java.util.List;
import java.util.Map;

/**
 * Created by 半瓶子 on 2/4/15.
 * blog: xusir.cnblogs.com
 */
public interface IBaseDao<T> {
    /**
     * 插入记录
     *
     * @param t
     * @return
     */
    int insert(T t);

    /**
     * 插入记录
     *
     * @param map
     * @return
     */
    int insertMap(Map<String, Object> map);

    /**
     * 删除一条记录
     *
     * @param id
     * @return
     */
    int delete(Object id);

    /**
     * 删除记录
     *
     * @param map
     * @return
     */
    int deleteMap(Map<String, Object> map);

    /**
     * 更新记录
     *
     * @return
     */
    int update(T t);

    /**
     * 更新记录
     *
     * @param map
     * @return
     */
    int updateMap(Map<String, Object> map);

    /**
     * 获取一条记录
     *
     * @param id
     * @return
     */
    T get(Object id);

    /**
     * 获得一条记录
     *
     * @param map
     * @return
     */
    T getMap(Map<String, Object> map);

    /**
     * 查询一组数据
     *
     * @param t
     * @return
     */
    List<T> select(T t);

    /**
     * 查询一组记录
     *
     * @param map
     * @return
     */
    List<T> selectMap(Map<String, Object> map);

    List<T> selectPage(Page page);

    /**
     * 计算总数
     *
     * @param map
     * @return
     */
    int countMap(Map<String, Object> map);

    /**
     * 计算总数
     *
     * @param t
     * @return
     */
    int count(T t);
}
